package pe.edu.upc.dew.grupo3a.web;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.context.support.WebApplicationContextUtils;

import pe.edu.upc.dew.grupo3a.service.PeliculaService;
import pe.edu.upc.dew.grupo3a.model.Pelicula;


/**
 * Servlet implementation class RegPeliculas
 */
public class RegPeliculas extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private PeliculaService peliculaService;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegPeliculas() {
        super();
        // TODO Auto-generated constructor stub
    }
	@Override
	public void init(ServletConfig config) throws ServletException	{
			this.peliculaService = WebApplicationContextUtils
			.getWebApplicationContext(config.getServletContext())
			.getBean("peliculaService", PeliculaService.class);
			
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Pelicula pelicula= null;
		// TODO Auto-generated method stub
		
		//
		String action = request.getParameter("accion");
		if(action.equals("buscar")){
			String codigo = request.getParameter("codigo");
			String nombre = request.getParameter("nombre");
			if(codigo.length()>0)
				pelicula = peliculaService.getPeliculaPorCodigo(codigo);
			if(nombre.length()>0)
				pelicula = peliculaService.getPeliculaPorNombre(nombre);
			action="BusquedaError";
			if(pelicula!=null) action="editar";
			request.setAttribute("pelicula", pelicula);
		} else if (action.equals("editar")){
			String codigo = request.getParameter("CodigoSelected");
			pelicula = peliculaService.getPeliculaPorCodigo(codigo);
			request.setAttribute("pelicula", pelicula);
			
		} else if(action.equals("grabar")|| action.equals("nuevo")){
			SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 
			String codigo = request.getParameter("codigopelicula");
			String nombre = request.getParameter("nombrepelicula");
			String genero = request.getParameter("cmbgeneropelicula");
			String clasificacion = request.getParameter("cmbclasificacion");
			String sinopsis = request.getParameter("sinopsis");
			int duracion = Integer.parseInt(request.getParameter("duracion"));
			String nacionalidad = request.getParameter("nacionalidad");
			String director = request.getParameter("director");
			java.util.Date fechaEstreno = new Date(); 
			try {
				fechaEstreno = dateFormat.parse(request.getParameter("fe_estreno"));
			} catch (ParseException e) {
			}
			String estado = request.getParameter("cmbestado");
			String fotoPath = "";//request.getParameter("codigopelicula");
			// Put all data in model Pelicula 
			pelicula = new Pelicula();
			pelicula.setClasificacion(clasificacion);
			pelicula.setCodigopelicula(codigo);
			pelicula.setDirector(director);
			pelicula.setDuracion(duracion);
			pelicula.setEstado(estado);
			pelicula.setFechaEstreno(fechaEstreno);
			pelicula.setFotoPath("");
			pelicula.setGenero(genero);
			pelicula.setNacionalidad(nacionalidad);
			pelicula.setNombre(nombre);
			pelicula.setSinopsis(sinopsis);
			if(peliculaService.getPeliculaPorCodigo(codigo)!=null){
				peliculaService.updatePelicula(pelicula);
				action="GrabarOK";
				}
			else{
				peliculaService.insertPelicula(pelicula);
				action="GrabarError";
			}
		} 
		List<Pelicula> peliculasEstreno = peliculaService.getPeliculasPorEstado("Estreno");
		List<Pelicula> peliculasPorEstrenar = peliculaService.getPeliculasPorEstado("Proximamente");
		//
		request.setAttribute("peliculasEstreno", peliculasEstreno);
		request.setAttribute("peliculasPorEstrenar", peliculasPorEstrenar);
		request.setAttribute("accion", action);
		//
		request.getRequestDispatcher("registropelicula.jsp").forward(request,response);
	}

}
